home
***
CD-ROM
|
disk
|
FTP
|
other
***
search
/
Languguage OS 2
/
Languguage OS II Version 10-94 (Knowledge Media)(1994).ISO
/
language
/
parallax
/
mac_sit.hqx
/
Parallaxis 2.11
/
fractal.z
< prev
next >
Wrap
Text File
|
1992-01-09
|
6KB
|
198 lines
START
127 PE
3 PORTS
SCALAR I2 R1 R127 I2 R1
VECTOR I1 R3
1 : GOTO 134;
2 : PROC 1 VECTOR I1;
POPV VI1:1;
VI[VI1:1] := 0;
PUSHV VI1:1;
RETURN;
3 : PROC 1;
ERROR "value out of range";
RETURN;
4 : PROC 1
SCALAR
VECTOR I2 I1 B1; group number 1
PUSHV ADDR VI1:2;
5 : VI1:1 := ID - 1; for TREE calculating DIMi
VI1:1 := VI1:1 + 1; DIM1
6 : VI1:3 := 2 * VI1:1;
7 : VI1:3 := VI1:3 - 1;
8 : VI1:2 := VI1:3;
VI1:2 := VI1:2 + 1;
IF VI1:3 < 0 CALL 2;
IF VI1:3 > 126 CALL 2;
CONNECT 1 TO 2 AT VI1:2;
9 : VI1:3 := 2 * VI1:1;
10 : VI1:3 := VI1:3 + 1;
11 : VI1:3 := VI1:3 - 1;
12 : VI1:2 := VI1:3;
VI1:2 := VI1:2 + 1;
IF VI1:3 < 0 CALL 2;
IF VI1:3 > 126 CALL 2;
CONNECT 3 TO 2 AT VI1:2;
13 : VI1:3 := VI1:1 MOD 2;
14 : VB1:1 := VI1:3;
15 : VB1:1 := NOT VB1:1;
16 : IF VB1:1 CALL 17;
GOTO 22;
17 : PROC 2;
18 : VI1:3 := VI1:1 / 2;
19 : VI1:3 := VI1:3 - 1;
20 : VI1:2 := VI1:3;
VI1:2 := VI1:2 + 1;
IF VI1:3 < 0 CALL 2;
IF VI1:3 > 126 CALL 2;
CONNECT 2 TO 1 AT VI1:2;
21 : RETURN;
22 : VI1:3 := VI1:1 MOD 2;
23 : VB1:1 := VI1:3;
24 : IF VB1:1 CALL 25;
GOTO 30;
25 : PROC 2;
26 : VI1:3 := VI1:1 / 2;
27 : VI1:3 := VI1:3 - 1;
28 : VI1:2 := VI1:3;
VI1:2 := VI1:2 + 1;
IF VI1:3 < 0 CALL 2;
IF VI1:3 > 126 CALL 2;
CONNECT 2 TO 3 AT VI1:2;
29 : RETURN;
30 : POPV VI1:2;
31 : RETURN; group number : 1
32 : PROC 1; configuration : TREE
VI0:1 := ID - 1; for TREE calculating DIMi
VI0:1 := VI0:1 + 1; DIM1
RETURN; configuration : TREE
33 : PROC 1
SCALAR I1 I1
VECTOR R2 I1 R1 ; GAUSS
34!23 : VR1:2 := 0.00000; line 23 column 2
35!24 : SI1:1 := 1; line 24 column 2
36 : SI1:2 := 4;
37!24 : IF SI1:1 > SI1:2 GOTO 43; line 24 column 2
38!24 : VI1:1 := RANDOM; line 24 column 19
39 : VR1:3 := VI1:1;
40 : VR1:2 := VR1:2 + VR1:3;
41 : SI1:1 := SI1:1 + 1;
42 : GOTO 37;
43!25 : VR1:3 := 5.28596e-05 * VR1:2; line 25 column 2
44 : VR1:1 := VR1:3 - 3.46410;
45 : GOTO 46; RETURN
46!26 : PUSHV VR1:1;
47 : RETURN; GAUSS
48 : PROC 1
SCALAR I1 B1 I2 ; INORDER
49!28 : POPS SI1:1;
50!31 : SB1:1 := SI1:1 <= 127; line 31 column 2
51 : IF SB1:1 = FALSE GOTO 66;
52!32 : SI1:2 := 2 * SI1:1; line 32 column 4
53 : PUSHS SI1:2;
54 : CALL 48; INORDER
55!33 : IF SI1:1 < 1 CALL 3; line 33 column 6
56 : IF 127 < SI1:1 CALL 3;
57 : SI1:2 := ADDR SR0:2 - SIZE( R1 );
58 : SI1:3 := SI1:1 * SIZE( R1 );
59 : SI1:2 := SI1:2 + SI1:3;
60 : WRITE SR[SI1:2] 10 3;
61!34 : WRITE EOL; line 34 column 6
62!35 : SI1:2 := 2 * SI1:1; line 35 column 4
63 : SI1:2 := SI1:2 + 1;
64 : PUSHS SI1:2;
65 : CALL 48; INORDER
66!37 : RETURN; INORDER
67 : PROC 1
SCALAR R1 I4 I1 B1
VECTOR B3 R2 I1 ; MIDPOINTREC
68!39 : POPS SI1:1;
69 : POPS SR1:1;
70!43 : SI1:5 := SI1:1 - 1; line 43 column 2
71 : SI1:2 := 2 ^ SI1:5;
72!44 : SI1:5 := 2 * SI1:2; line 44 column 2
73 : SI1:3 := SI1:5 - 1;
74!45 : SI1:5 := 2 * SI1:3; line 45 column 2
75 : SI1:4 := SI1:5 + 1;
76!47 : CALL 32; line 47 column 2
77!48 : VB1:1 := TRUE; line 48 column 4
78 : VB1:3 := SI1:2 <= ID;
79 : IF VB1:3 = FALSE CALL 82;
80 : IF VB1:1 CALL 85;
81 : GOTO 89;
82 : PROC 2;
83 : VB1:1 := FALSE;
84 : RETURN;
85 : PROC 2;
86 : VB1:3 := ID <= SI1:3;
87 : VB1:1 := VB1:3;
88 : RETURN;
89 : IF VB1:1 CALL 91;
90 : GOTO 99;
91 : PROC 2;
92!49 : VR1:2 := VR0:2 + VR0:3; line 49 column 6
93 : VR1:2 := 0.500000 * VR1:2;
94 : CALL 33; GAUSS
95 : POPV VR1:1;
96 : VR1:1 := SR1:1 * VR1:1;
97 : VR0:1 := VR1:2 + VR1:1;
98 : RETURN;
99!53 : VB1:1 := TRUE; line 53 column 4
100 : VB1:3 := SI1:2 <= ID;
101 : IF VB1:3 = FALSE CALL 104;
102 : IF VB1:1 CALL 107;
103 : GOTO 111;
104 : PROC 2;
105 : VB1:1 := FALSE;
106 : RETURN;
107 : PROC 2;
108 : VB1:3 := ID <= SI1:4;
109 : VB1:1 := VB1:3;
110 : RETURN;
111 : IF VB1:1 CALL 113;
112 : GOTO 133;
113 : PROC 2;
114!55 : PROPAGATE VR0:2 OUT 1 IN 2; line 55 column 6
115!56 : PROPAGATE VR0:3 OUT 3 IN 2; line 56 column 6
116!57 : PROPAGATE VR0:1 OUT 1 IN 2; line 57 column 6
117!58 : PROPAGATE VR0:1 OUT 3 IN 2; line 58 column 6
118!59 : VI1:1 := ID MOD 2; line 59 column 6
119 : VB1:3 := VI1:1;
120 : VB1:3 := NOT VB1:3;
121 : VB1:2 := TRUE;
122 : IF VB1:3 CALL 128;
123 : IF VB1:2 CALL 125;
124 : GOTO 132;
125 : PROC 2;
126!59 : VR0:2 := VR0:1; line 59 column 39
127 : RETURN;
128 : PROC 2;
129 : VB1:2 := FALSE;
130!59 : VR0:3 := VR0:1; line 59 column 26
131 : RETURN;
132 : RETURN;
133!62 : RETURN; MIDPOINTREC
134 : CALL 4; connections
135!66 : CALL 32; line 66 column 2
136!67 : VR0:2 := 0.00000; line 67 column 4
137!68 : VR0:3 := 1.00000; line 68 column 4
138!69 : VR0:1 := 0.00000; line 69 column 4
139!71 : SI0:1 := 1; line 71 column 2
140 : SI0:3 := 7;
141!71 : IF SI0:1 > SI0:3 GOTO 151; line 71 column 2
142!72 : SI0:4 := SI0:1 + 1; line 72 column 4
143 : SR0:129 := SI0:4;
144 : SR0:129 := SR0:129 / 2.00000;
145 : SR0:1 := 0.500000 ^ SR0:129;
146!73 : PUSHS SR0:1; line 73 column 4
147 : PUSHS SI0:1;
148 : CALL 67; MIDPOINTREC
149 : SI0:1 := SI0:1 + 1;
150 : GOTO 141;
151!75 : CALL 32; line 75 column 2
152 : STORE VR0:1 TO SR0:2;
153!76 : PUSHS 1; line 76 column 2
154 : CALL 48; INORDER
155 : END; FRACTAL
STOP